<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

//----------------------------------
// ThinkPHP公共入口文件
//----------------------------------

header('Content-Type:text/html;charset=utf-8');

// 记录开始运行时间
$GLOBALS['_beginTime'] = microtime(TRUE);
// 记录内存初始使用
define('MEMORY_LIMIT_ON', function_exists('memory_get_usage'));
if(MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage();

// 版本信息
const THINK_VERSION 	= '3.2.3';

// 进化版本信息 lzhf237@126.com
const REVISE_VERSION 	= '飞牛进化版_V170701';

// URL 模式定义
const URL_COMMON 		= 0; // 普通模式
const URL_PATHINFO 		= 1; // PATHINFO模式
const URL_REWRITE 		= 2; // REWRITE模式
const URL_COMPAT 		= 3; // 兼容模式

// 路径分隔符
defined('DS') or define('DS', DIRECTORY_SEPARATOR);
// 框架系统目录，即本级目录，不能用 __DIR__ 来定义
defined('CORE_PATH') or define('CORE_PATH', realpath(dirname(__FILE__)) . DS);
// 核心类库目录
defined('THINK_PATH') or define('THINK_PATH', CORE_PATH . 'think' . DS);
// 系统应用模式目录
defined('MODE_PATH') or define('MODE_PATH', CORE_PATH . 'mode' . DS);
// 行为目录
defined('BEHAVIOR_PATH') or define('BEHAVIOR_PATH', CORE_PATH . 'behavior' . DS);
// 网站基目录，即 目录thinkphp 的同级目录
defined('BASE_PATH') or define('BASE_PATH', realpath(dirname(__FILE__) . '/../') . DS);
// 网站根目录
defined('ROOT_PATH') or define('ROOT_PATH', BASE_PATH . 'public' . DS);
// 扩展类库目录(内置)
defined('VENDOR_PATH') or define('VENDOR_PATH', CORE_PATH . 'vendor' . DS);
// 扩展类库目录
defined('EXTEND_PATH') or define('EXTEND_PATH', BASE_PATH . 'extend' . DS);
// 应用目录
defined('APP_PATH') or define('APP_PATH', BASE_PATH . 'app' . DS);
// 插件目录
defined('ADDON_PATH') 	or define('ADDON_PATH', 	APP_PATH . 'addon');
defined('COMMON_PATH') 	or define('COMMON_PATH', 	APP_PATH . 'common' . DS); // 应用公共目录
defined('CONF_PATH') 	or define('CONF_PATH', 		COMMON_PATH . 'conf' . DS); // 应用配置目录
// 应用运行时目录
defined('RUNTIME_PATH') or define('RUNTIME_PATH', BASE_PATH . 'runtime' . DS);
defined('HTML_PATH') 	or define('HTML_PATH', 		RUNTIME_PATH . 'html' . DS); // 应用静态目录
defined('LOG_PATH') 	or define('LOG_PATH', 		RUNTIME_PATH . 'logs' . DS); // 应用日志目录
defined('TEMP_PATH') 	or define('TEMP_PATH', 		RUNTIME_PATH . 'temp' . DS); // 应用缓存目录
defined('DATA_PATH') 	or define('DATA_PATH', 		RUNTIME_PATH . 'data' . DS); // 应用数据目录
defined('CACHE_PATH') 	or define('CACHE_PATH', 	RUNTIME_PATH . 'cache' . DS); // 应用模板缓存目录
defined('CONF_EXT') 	or define('CONF_EXT', 		'.php'); 	// 配置文件后缀
defined('CONF_PARSE') 	or define('CONF_PARSE', 	''); 		// 配置文件解析方法

// 应用状态 加载对应的配置文件
defined('APP_STATUS') 	or define('APP_STATUS', '');
// 是否调试模式
defined('APP_DEBUG') 	or define('APP_DEBUG', false);

// 判断识别 SAE 环境
if(function_exists('saeAutoLoader')){
	defined('APP_MODE') 	or define('APP_MODE', 'sae');
	defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'Sae');
}else{
	defined('APP_MODE') 	or define('APP_MODE', 		'common'); 	// 应用模式 默认为普通模式
	defined('STORAGE_TYPE') or define('STORAGE_TYPE', 	'File'); 	// 存储类型 默认为File
}

// 系统信息
if(version_compare(PHP_VERSION, '5.4.0', '<')){
	ini_set('magic_quotes_runtime', 0);
	define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc() ? true : false);
}else{
	define('MAGIC_QUOTES_GPC', false);
}

// 系统环境
define('IS_CGI', (0 === strpos(PHP_SAPI,'cgi') || false !== strpos(PHP_SAPI, 'fcgi')) ? 1 : 0);
define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
define('IS_CLI', PHP_SAPI == 'cli' ? 1 : 0);

if(!IS_CLI){
	// 当前文件名
	if(!defined('_PHP_FILE_')){
		if(IS_CGI){
			// CGI/FASTCGI模式下
			$_temp = explode('.php', $_SERVER['PHP_SELF']);
			define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'], '', $_temp[0] . '.php'), '/'));
		}else{
			define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'], '/'));
		}
	}
	if(!defined('__ROOT__')){
		$_root = rtrim(dirname(_PHP_FILE_), '/');
		define('__ROOT__', (($_root == '/' || $_root == '\\') ? '' : $_root));
	}
}

// 加载核心 Think 类
require THINK_PATH . 'Think.php';
// 应用初始化
think\Think::start();
